// Copyright 叶湘 ( weixin:yexiang841, email:yexiang841@qq.com ), Shitouren Studio. All Rights Reserved.

#pragma once

#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "Hit/Q3D_CPPU_Hit.h"
#include "Q3D_CPPI_HitTarget.generated.h"

// This class does not need to be modified.
UINTERFACE(MinimalAPI, Blueprintable, meta = (Tooltip = "使用 HitTarget 必须实现的接口(C++)"))
class UQ3D_CPPI_HitTarget : public UInterface
{
	GENERATED_BODY()
};

/**
 * 
 */
class Q3D_LIB_API IQ3D_CPPI_HitTarget
{
	GENERATED_BODY()

	// Add interface functions to this class. This is the class that will be inherited to implement this interface.
public:
	UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category = Q3D_I_HitTarget, meta = (Tooltip = "HitTarget 接口，对 Owner 施加命中"))
	void Q3D_IF_Hit_Set(UQ3D_CPPU_Hit *ptr_u_hit, UPARAM(DisplayName = "boool_success") bool &bool_success, UPARAM(DisplayName = "string_log") FString &string_log);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category = Q3D_I_HitTarget, meta = (Tooltip = "HitTarget 接口，根据 ID 取消命中"))
	void Q3D_IF_Hit_Cancel_ById(FName name_id, UPARAM(DisplayName = "boool_success") bool &bool_success, UPARAM(DisplayName = "string_log") FString &string_log);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category = Q3D_I_HitTarget, meta = (Tooltip = "HitTarget 接口，根据命中类型取消命中"))
	void Q3D_IF_Hit_Cancel_ByType(EQ3D_CPPE_HitType enum_hit_type, UPARAM(DisplayName = "int_count") int32 &int_count);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category = Q3D_I_HitTarget, meta = (Tooltip = "HitTarget 接口，根据命中来源取消命中"))
	void Q3D_IF_Hit_Cancel_ByCauser(EQ3D_CPPE_HitType enum_hit_type, AActor *ptr_a_hit_causer, UPARAM(DisplayName = "int_count") int32 &int_count);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent, Category = Q3D_I_HitTarget, meta = (Tooltip = "HitTarget 接口，清除 Owner 上的所有同类型命中"))
	void Q3D_IF_Hit_Cancel_All(UPARAM(DisplayName = "int_count") int32 &int_count);
};
